package main
import "fmt"
func main(){
	//变量类型分为值类型和引用类型
	//值类型就是改变变量副本的时候，不会改变变量本身
	//引用类型就是改变变量副本的时候，会改变变量本身

	//改变基于切片的切片 也就是改变切片副本时，切片本身也会发生改变
	sliceA:=[]string{"北京","上海","深圳"}
	sliceB:=sliceA[:]
	sliceB[0]="重庆"
	fmt.Println(sliceA,sliceB)

	//要想改变变量的副本时，变量本身不发生改变，那么应该使用copy内置函数
	//通过make内置函数创建一个能够接收切片的副本切片
	sliceC:=make([]string,3,8)
	copy(sliceC,sliceA)
	sliceC[0]="成都"
	fmt.Printf("sliceA=%v,sliceC=%v\n",sliceA,sliceC)


	//删除切片中的某个元素
	sliceD:=[]string{"北京","上海","成都","杭州","苏州","重庆","深圳","广州"}
	fmt.Println(sliceD)
	sliceD=append(sliceD[:3],sliceD[4:]...)
	fmt.Println(sliceD)
	
	//删除string中的某个字符
	//如果string中只包含ascall码字符 由于string不能修改，只能将string转化为切片进行操作
	//将string转化为切片
	str:="hello g world"
	arrstr:=[]byte(str)
	arrstr=append(arrstr[:6],arrstr[7:]...)
	arrstr[6]='-'
	arrstr[5]='-'
	str=string(arrstr)
	fmt.Println(str)
	//如果string中包含除ascall码的字符
	//将string转化为转化为[]rune类型的切片
	str="我爱China!"
	arrstr1:=[]rune(str)
	arrstr1=append(arrstr1[:1],arrstr1[1:]...)
	arrstr1[0]='大'
	str=string(arrstr1)
	fmt.Println(str)
}